package cn.topcode.unicorn.wxsdk.shop;

import cn.topcode.unicorn.wxsdk.base.Result;
import cn.topcode.unicorn.wxsdk.shop.dto.*;

/**
 * 微信小店接口
 */
public interface ShopInvoker {

    /*商品管理接口*/

    /**
     * 创建商品
     * @param createGoods
     * @return
     */
    CreateGoodsResult createGoods(CreateGoods createGoods);

    /**
     * 删除商品
     * @param productId
     * @return
     */
    Result deleteGoods(String productId);

    /**
     * 修改商品
     * @param updateGoods
     * @return
     */
    Result updateGoods(UpdateGoods updateGoods);

    /**
     * 查询商品信息
     * @param productId
     * @return
     */
    QueryGoodsResult queryGoods(String productId);

    /**
     * 根据状态查询所有商品
     * @param status
     * @return
     */
    QueryGoodsByStatusResult queryGoodsByStatus(int status);

    /**
     * 商品上架
     * @param productId
     * @return
     */
    Result putOnGoods(String productId);

    /**
     * 商品下架
     * @param productId
     * @return
     */
    Result putOffGoods(String productId);

    /**
     * 获取指定分类的所有子分类
     * @param cateId
     * @return
     */
    GetSubCatalogResult getSubCatalog(String cateId);

    void getSubCatalogSku(String cateId);

    void getCatalogProperty();

    /*库存管理接口*/

    /**
     * 添加库存
     * @param productId
     * @param skuInfo
     * @param quantity
     * @return
     */
    Result addStock(String productId, String skuInfo, int quantity);

    /**
     * 减少库存
     * @param productId
     * @param skuInfo
     * @param quantity
     * @return
     */
    Result subStock(String productId, String skuInfo, int quantity);

    /*邮费模板管理接口*/


    void addPostageTemplate();

    void deletePostageTemplate();

    void updatePostageTemplate();

    void getPostageTemplateById();

    void getAllPostageTemplate();

    /*分组管理接口*/

    void addGroup();

    void deleteGroup();

    void updateGroupProperty();

    void updateGroupGoods();

    void getAllGroup();

    void getGroupById();

    /*货架管理接口*/

    void addShelves();

    void deleteShelves();

    void updateShelves();

    void getAllShelves();

    void getShelvesById();

    void setShelvesPage();

    /*订单管理接口*/

    void orderPayNotify();

    void getOrderById();

    void getOrderByStatus();

    void setOrderSendGoodsInfo();

    void closeOrder();

    /*功能接口*/

    void uploadImage();
}
